#ifndef MYABSTRACTMAPCONTAINER_H
#define MYABSTRACTMAPCONTAINER_H

//#include "myabstractmapcontainer.h"
class QVariant;

/** Не шаблонизированный абстрактный адаптер.
 *
 * Необходим, т.к. макрос Q_OBJECT конфликтует
 * с шаблонами.
 * @author Василий Почкаенко
 */
class MyAbstractMapContainer{
public:
	MyAbstractMapContainer(){}

	/** Получить ключь по индексу.*/
	virtual QVariant getKey(const int i) const = 0;

	/** Получить значение по индексу.*/
	virtual QVariant getValue(const int i) const  = 0;

	/** Установить значение по индексу.*/
	virtual void setValue(const int i, const QVariant & value) = 0;

	/** Установить ключ по индексу.
	 *
	 * Добавляет копию элемента с новым ключём и удаляет старый.
	 */
	virtual void setKey(const int i, const QVariant & key) = 0;

	/** Удалить элемент по индексу.*/
	virtual bool deleteItem(const int i) = 0;

	/** Получить размер масива*/
	virtual int size() const  = 0;
};

#endif // MYABSTRACTMAPCONTAINER_H
